struct TCompoundInner2 {
	1: required bool boolType;
  2: required byte byteType;
  3: required i16 shortType;
  4: required i32 intType;
  5: required i64 longType;
  6: required double floatType;
  7: required double doubleType;
  8: required string stringType;
}

struct TCompoundInner1 {
	1: required bool boolType;
  2: required byte byteType;
  3: required i16 shortType;
  4: required i32 intType;
  5: required i64 longType;
  6: required double floatType;
  7: required double doubleType;
  8: required string stringType;
  9: optional TCompoundInner2 compoundType;
}

struct TCompound {
	1: required bool boolType;
  2: required byte byteType;
  3: required i16 shortType;
  4: required i32 intType;
  5: required i64 longType;
  6: required double floatType;
  7: required double doubleType;
  8: required string stringType;
  9: optional TCompoundInner1 compoundType;
}

struct TCompounds {
  1: list<TCompound> compoundType;
}
